package cn.iocoder.yudao.module.shop.service.agent;

import javax.validation.*;

import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.shop.controller.admin.agent.vo.*;
import cn.iocoder.yudao.module.shop.dal.dataobject.agent.AgentDO;
import cn.iocoder.yudao.module.shop.dal.dataobject.agent.ManageDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 店铺代理商 Service 接口
 *
 * @author 芋道源码
 */
public interface AgentService {

    /**
     * 创建店铺代理商
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createAgent(@Valid AgentSaveReqVO createReqVO);

    /**
     * 更新店铺代理商
     *
     * @param updateReqVO 更新信息
     */
    void updateAgent(@Valid AgentSaveReqVO updateReqVO);

    /**
     * 删除店铺代理商
     *
     * @param id 编号
     */
    void deleteAgent(Long id);

    /**
     * 获得店铺代理商
     *
     * @param id 编号
     * @return 店铺代理商
     */
    AgentDO getAgent(Long id);

    /**
     * 获得店铺代理商分页
     *
     * @param pageReqVO 分页查询
     * @return 店铺代理商分页
     */
    PageResult<AgentDO> getAgentPage(AgentPageReqVO pageReqVO);

    // ==================== 子表（店铺管理） ====================

    /**
     * 获得店铺管理分页
     *
     * @param agentId 代理商id
     * @param pageReqVO 分页查询
     * @return 店铺管理分页
     */
    PageResult<ManageDO> getManagePage(PageParam pageReqVO, Long agentId);

    /**
     * 创建店铺管理
     *
     * @param manage 创建信息
     * @return 编号
     */
    Long createManage(@Valid ManageDO manage);

    /**
     * 更新店铺管理
     *
     * @param manage 更新信息
     */
    void updateManage(@Valid ManageDO manage);

    /**
     * 删除店铺管理
     *
     * @param id 编号
     */
    void deleteManage(Long id);

	/**
	 * 获得店铺管理
	 *
	 * @param id 编号
     * @return 店铺管理
	 */
    ManageDO getManage(Long id);

}